﻿using FlexFlow.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FlexFlow.Base.Interface
{
    /// <summary>
    /// 表示用户-组织机构关系提供者
    /// </summary>
    public interface IUserRelationProvider : IPhysicalEntityProvider<UserRelation>
    {
        /// <summary>
        /// 取得指定组织机构的关系
        /// </summary>
        /// <param name="orgId">
        /// 要取得成员列表的组织机构ID
        /// </param>
        /// <returns>
        /// 取得的关系列表
        /// </returns>
        List<UserRelation> GetRelations(Guid orgId);
        /// <summary>
        /// 取得指定组织机构与指定成员的关联实例
        /// </summary>
        /// <param name="orgId">
        /// 要取得的关联的组织机构ID
        /// </param>
        /// <param name="memberId">
        /// 要取得的关联的成员ID
        /// </param>
        /// <returns>
        /// 取得的关联实体
        /// </returns>
        UserRelation Get(Guid orgId, Guid memberId);
        /// <summary>
        /// 设定指定ID的关系关联的组织机构
        /// </summary>
        /// <param name="relId">
        /// 要设置的关系ID
        /// </param>
        /// <param name="newOrgId">
        /// 要设置的组织机构ID
        /// </param>
        /// <returns>
        /// 一个表示是否设置成功的值
        /// </returns>
        bool SetOrg(Guid relId, Guid newOrgId);
        /// <summary>
        /// 检查指定组织机构与指定成员的关联是否已经存在
        /// </summary>
        /// <param name="orgId">
        /// 要检查的组织机构ID
        /// </param>
        /// <param name="memberId">
        /// 要检查的成员ID
        /// </param>
        /// <returns>
        /// 一个表示是否存在的值
        /// </returns>
        bool Exist(Guid orgId, Guid memberId);
    }
}
